<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基本使用 </title>
</head>

<body>
    <script>
        // Promise是一个构造函数
        // p是promise 对象。对象有两个重要的属性
        // 1. PromiseState 状态属性 pending  fulfilled  rejected
        // 2. PromiseResult 结果值：
        let p = new Promise((resolve,reject)=>{
            // resolve 是成功时候执行的函数
            //   1. 设置成功的结果值 resolve('ok'); resolve 的参数是成功的结果值
            //   2. 改变当前promise的状态 为成功的状态 fulfilled

            // resolve('ok'); // pending -> fulfilled
            // reject  是失败时候执行的函数
            //   1. 设置失败的结果值：reject('error') reject 的参数是失败的结果值
            //   2. 改变promise的状态为失败  rejected
            reject('error');// pending -> rejected
        })
        // promise状态：
        //      pending --> fulfilled
        //      pending --> rejected
        // 不可以从 fulfilled     -》 rejected
        // 也不可以从  rejected   -》 fulfilled
        // 也不能从 fulfilled | rejected -> pending

        console.log(p);
        //语法：
        // promise实例对象.then(成功的回调函数, 失败的回调函数)
        
        // then方法： 一个promise对象可以调用then方法，then方法用来指定成功或失败的回调
        // 如果是一个成功状态的promise，那么会执行then方法指定的成功的回调。并将成功的结果值，作为成功回调的参数。
        // 如果是一个失败状态的promise，那么会执行then方法指定的失败的回调。并将失败的结果值作为，失败回调的参数

        
        // value 和 reason是形参，可以随便命名，但此处使用的value和reason是有意义的名字
        p.then((value)=>{
            console.log('我是成功的promise',value);
        },(reason)=>{
            console.log('我是失败的promise',reason);
        })
    </script>
</body>

</html>